home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1 Issue 2 / PDCD-1 - Issue 02.iso / _utilities / utilities / 004 / gamesuit / !Amnesia / AmsHelp / Basics < prev    next >
Text File  |  1994-10-12  |  7KB  |  137 lines

  1. The Basics - Amnesia - Version 1.00
  2. ===================================
  3.  
  4. Basic Use
  5. ---------
  6.  
  7. This file contains the information necessary to use Amnesia for simple tasks in a form suitable for the inexperienced programmer.  It describes how to write a simple program in BASIC.
  8.  
  9. A Simple Amnesia Program
  10. ------------------------
  11.  
  12. Programs using Amnesia to display and move objects on the screens must do the following things:
  13.  
  14. (1) Initialise Amnesia
  15. (2) Arrange a way to plot sprites
  16. (3) Set up some sort of table of objects
  17. (4) Create objects in that table
  18. (5) Process the table
  19.  
  20. Iæll deal with each of these in turn.
  21.  
  22. (1) Initialising Amnesia
  23. ========================
  24.  
  25. When you initialise Amnesia you basically tell it which bit of memory you want it to use.
  26.  
  27. Instruction
  28.  
  29. SYS "Amnesia_Init",address,length,type
  30.  
  31. address= the address of the memory you want Amnesia to use
  32. length = the amount of memory available to it there
  33. type   = the type of area.  Type 2 is best suited for BASIC programs.
  34.  
  35. Example
  36.  
  37. At the start of your program you would code something like
  38.  
  39. arealen=&4000         ;16Kbytes
  40. DIM area arealen      ;Tell BASIC to reserve some memory for you
  41.                       ;of length arealen, and put the address of the
  42.                       ;memory itæs reserved in the variable 'area'
  43. SYS "Amnesia_Init",area,arealen,2   ;Tell Amnesia
  44.  
  45. If you want to keep it really simple you can put the Amnesia area in the RMA.  Simple pass zero as your area address.  Only one line is needed
  46.  
  47. SYS "Amnesia_Init",0,&4000,2
  48.  
  49. This has the advantage that if you return to the Desktop, your Amnesia area will still be there so you can use the debugging command.
  50.  
  51. Notes
  52.  
  53. You can work out the right value of arealen by trial and error.  If itæs too small, Amnesia will give you a 'Not enough memory' error, so you can increase arealen and try again.
  54.  
  55. (2) Arranging a Way to Plot Sprites
  56. ===================================
  57.  
  58. Amnesia is designed to work with the FastSpr module.  You should have received a copy with Amnesia, with instructions and a sprite file maker.  You donæt have to use FastSpr, but it will make things easier.
  59.  
  60. Firstly, make sure FastSpr is loaded:
  61.  
  62. *Run FastSpr:!Run
  63.  
  64. This will load the module.  Itæs best placed in your !Run file (more of that later) but can be in your main program if you wish.
  65.  
  66. FastSpr loads files using the following command:
  67.  
  68. *FastSprLoad 1 FSPSprites
  69.  
  70. This will load a file called FSPSprites into sprite pool 1.  You can load lots of sprite files - each into a different pool.
  71.  
  72. See the instructions with FastSpr for more information.
  73.  
  74. (3) Set Up Some Sort of Table of Objects
  75. ========================================
  76.  
  77. Tables of objects are Amnesiaæs bread and butter.  They are a powerful way to handle the player, aliens, bombs, bullets and really anything that needs to be plotted as a sprite on the screen.  Before you can use a table, you must tell Amnesia what sort of table you want.
  78.  
  79. Instruction
  80.  
  81. SYS "Amnesia_ClaimTable",table number,flags,name$,number of objects, length of objects
  82.  
  83. The table number is a number from 1-31, which you will use to identify the table later.
  84. If flags=1 Amnesia will prepare this table for collision checking - otherwise not.
  85. name$ is for your use only.  It is used to make the debugging information more readable.  The name may be up to 8 letters long.  Names like "Aliens" or "Bullets" are good.
  86. The number of objects is just that.  If you want 20 aliens, set this number to 20.  Note that this is the maximum number - if you specified 20, you could have any number up to 20, but no more.
  87. The length of the objects is the number of bytes given to each object.  Use 32 for standard objects.
  88.  
  89. Example
  90.  
  91. SYS "Amnesia_ClaimTable",1,1,"Aliens",27,32
  92.  
  93. This command sets up table 1 with 27 spaces for objects 32 bytes long, and tells Amnesia that we will need to collision check these objects.
  94.  
  95. (4) Create Objects In That Table
  96. ================================
  97.  
  98. So youæve created an empty table.  You need to create some objects in that table, like bullets or aliens etc.  There are various ways to do this, but the easiest is with the purpose built SWI.
  99.  
  100. Instruction
  101.  
  102. SYS "Amnesia_MakeObject",table number,sprite number,flags,x coord,y coord,x velocity,y velocity,timer,size
  103.  
  104. Itæs a big one, isnæt it!  Iæll go through each number in turn.
  105.  
  106. Table number : The same number you gave to Amnesia_ClaimTable as a table number.
  107. Sprite number : See the information with FastSpr for full info, but briefly the number is in the form &xx00yyyy where x is the sprite pool, and y is the sprite number.  &02000003 would mean sprite 3 from sprite pool 2.
  108.  
  109. Flags : This value tells Amnesia what sort of properties the object has.  Whether it moves, whether it has a timer, whether it is animated, whether it obeys gravity etc etc.  A full list of flags is in the flags help file.  Hereæs a couple for the moment.
  110.  
  111. If bit 0 is set, the object is plotted by FastSpr
  112. If bit 2 is set, the object moves
  113.  
  114. x coord : The x position of the sprite (remember, x is a cross 8-) ).  Amnesia uses different coordinates to normal BASIC.  The top-left of the screen is (0,0) and in MODE 13 (320x256) the bottom right is (320<<12,256<<12).  320<<12 means 320 shifted right 12 places in binary, which is the same as multiplying by 4096.
  115.  
  116. y coord : Similarly
  117. x velocity : The velocity is added to the x coordinate every time the table is processed (see later in (5)) if and only if bit 2 is set in the flags.
  118. y velocity : Similarly
  119.  
  120. timer : The timer can be thought of as split into two halves, like &xxxxyyyy.  x is the timer value, and y is the value subtracted from the timer on each process pass (see (5)).  So if the timer value is &012C0003, the timer value is &12C and 3 is subtracted on each process pass.  With this value, the timer will expire after 100 process passes (&12C=300).
  121.  
  122. size : Again this is split like the timer.  The value is of the form &xxxxyyyy, where x is the x size in pixels, and y is the y size.  So for a sprite 32 pixels wide and 16 high, the value would be &00200010.  You can ask Amnesia to work out the size from the FastSpr file by setting bit 6 in the flags.  This is usually a good idea.
  123.  
  124. (5) Processing the Table
  125. ========================
  126.  
  127. Table processing is controlled by two SWIs - Amnesia_SelectTable and Amnesia_ProcessTable.  These SWIs communicate using registers R0, R1 and R2.  A typical table process goes like this:
  128.  
  129. SYS "Amnesia_SelectTable",1,0,0 TO R0,R1,R2
  130. REPEAT
  131.   SYS "Amnesia_ProcessTable",R0,R1,R2 TO R0,R1,R2
  132. UNTIL R2=0
  133.  
  134. Amnesia_SelectTable is called to tell Amnesia which table you wish to processand what you want to do with that table.  Read its entry in the SWI docs for a full explanation.  With the parameters above it selects table 1 for a standard process.
  135.  
  136. This table process will simply plot and move your objects.  You can do a lot more than this when you process a table.  See the help file called Process for more information.
  137.